/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vn.webapp.service;

import algo.Common.DataOut;
import java.util.List;
import java.util.Set;
import vn.webapp.dto.DataPage;
import vn.webapp.model.Classes;
import vn.webapp.model.CourseTeacherClass;
import vn.webapp.model.Coursing;
import vn.webapp.model.Timetabling;
import vn.webapp.model.Timetablingraw;

public interface TimetablingService {
    
    public DataPage<Timetabling> getAll();

    public DataPage<Timetabling> list();
    
    public List<Timetablingraw> listRaw();
     
    public List<CourseTeacherClass> listViewing();
    
    public List<CourseTeacherClass> listViewingByClassId(int classId);
    
    public DataPage<Timetabling> listMorning();
    
    public DataPage<Timetabling> listAfternoon();

    public int removeATimetabling(int id);

    public int checkExists(int id, Coursing coursing, int coursingId, int roomId, int day, int slot);

    public int saveATimetabling(Coursing coursing, int roomId, int day, int slot, int timerange);
    
    public void editATimetabling(int id, Coursing coursing, int coursingId, int roomId, int day, int slot, int timerange);
    
    public DataPage<Timetabling> filter(int page, int pageSize);
    
    public String executeAlgorithm();
    
    public int saveAtimetablingAuto (DataOut _outputTimetabling, int randomCourseId);
    
    public int truncateOldData();
    
    public void truncateAllOldata(List<Timetabling> listTimetabling);
}
